/*
 * @lc app=leetcode.cn id=3 lang=javascript
 *
 * [3] 无重复字符的最长子串
 */

// @lc code=start
/**
 * @param {string} s
 * @return {number}
 */
// 滑动窗口
// 记录当前不重复的字符
var lengthOfLongestSubstring = function(s) {
  if (s.length < 2) return s.length
  let l = 0
  let r = 1
  let res = 0
  let set = new Set()
  set.add(s[l])
  while (r < s.length) {
    if (!set.has(s[r])) {
      set.add(s[r])
      r++
    } else {
      res = Math.max(res, r - l)
      while (s[l] !== s[r]) {
        set.delete(s[l])
        l++
      }
      l++
      r++
    }
  }
  if (s[l] !== s[r]) {
    res =  Math.max(res, r - l)
  }
  return res
};
// @lc code=end

